// 用户信息相关接口处理函数
import db from '../db/index.js'
import bcrypt from 'bcryptjs'

// 查询用户信息
export const getUserInfo = (req,res)=>{
    // 查询用户信息sql语句
    const sqlStr = 'select id, username, nickname, email, user_pic from ev_users where id=?'
    db.query(sqlStr,req.auth.id,(err,result)=>{
        if(err)return res.cc('数据查询失败(数据库出错)')
        if(result.length !== 1)return res.cc('未查到相关信息')
        // 查询成功
        console.log(result[0])
        res.send({
            status:200,
            message:'查询成功',
            data:result[0]
        })
    })
}

// 更新用户信息
export const updateUserInfo = (req,res)=>{
    // 更新用户信息sql语句
    const sqlStr = 'update ev_users set ? where id=?'
    db.query(sqlStr,[req.body,req.auth.id],(err,result)=>{
        if(err)return res.cc('数据库出错')
        if(result.affectedRows !== 1)return res.cc('更新用户信息失败')
        // 更新成功
        res.send({
            status:200,
            message:'更新成功'
        })
    })
}

// 修改用户密码
export const updateUserPwd = (req,res)=>{
    // 查询用户信息sql语句
    const sqlStr = 'select * from ev_users where id=?'
    db.query(sqlStr,req.auth.id,(err,result)=>{
        if(err)return res.cc('数据库错误')
        if(result.length !== 1)return res.cc('查无此人')
        // 查询成功,拿输入的旧密码和数据库的密码进行比对
        const isResPwd = bcrypt.compareSync(req.body.oldpwd,result[0].password)
        if(!isResPwd)return res.cc('输入的旧密码错误')
        // 输入的原密码和数据库密码比对成功,执行更新sql语句
        const sqlStr = 'update ev_users set password=? where id=?'
        // 对密码进行加密
        const newPwd = bcrypt.hashSync(req.body.newpwd,10)
        db.query(sqlStr,[newPwd,req.auth.id],(err,result)=>{
            if(err)return res.cc('数据库错误')
            if(result.affectedRows !== 1)return res.cc('重置密码失败')
            // 重置成功
            res.send({
                status:200,
                message:'重置密码成功'
            })
        })
    })
}

// 修改用户头像
export const updateAvatar = (req,res)=>{
    // 定义更新用户头像的sql语句
    const sqlStr = 'update ev_users set user_pic=? where id=?'
    db.query(sqlStr,[req.body.avatar,req.auth.id],(err,result)=>{
        if(err)return res.cc('数据库错误')
        if(result.affectedRows !== 1)return res.cc('更新头像失败')
        // 更新成功
        return res.send({
            status:200,
            message:'更新头像成功'
        })
    })
}